package com.maiko.usercenter.config;

import lombok.Data;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Redisson 配置类
 * 解决 Redis 原生 SETNX 实现的不可重入与失效释放问题。
 * @author: Maiko7
 * @create: 2025-07-13 10:52
 */
@Configuration
@ConfigurationProperties(prefix = "spring.data.redis")
@Data
public class RedissonConfig {

    /**
     * Redis数据库索引，默认为0
     */
    private Integer database;

    /**
     * Redis服务器主机地址
     */
    private String host;

    /**
     * Redis服务器端口号
     */
    private Integer port;

    /**
     * Redis连接密码
     */
    private String password;

    /**
     * 创建 RedissonClient Bean，供项目中注入使用
     *
     * @return RedissonClient 实例
     */
    @Bean
//    public RedissonClient redissonClient() {
//        Config config = new Config();
//        config.useSingleServer()
//                .setAddress("redis://127.0.0.1:6379")  // ✅ 必须带 redis://
//        return Redisson.create(config);
//    }
    public RedissonClient redissonClient() {
        Config config = new Config();
        config.useSingleServer()
                .setDatabase(database)
                .setAddress("redis://" + host + ":" + port);
//                .setPassword(password);
        return Redisson.create(config);
    }
}
